package com.future.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jdk.nashorn.internal.ir.annotations.Ignore;
import kotlin.jvm.Transient;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 用户角色认证申请表实体类（含实名信息）
 * 对应数据库表 certification
 */
@Data
@TableName("certification")
public class Certification {

    /**
     * 认证记录ID（自增主键）
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 申请用户ID（关联user表）
     */
    @TableField("user_id")
    private Long userId;

    //非数据库字段
    @TableField(exist=false)
    private String userIdStr;

    /**
     * 申请的角色（心理医生/教师）
     * 对应数据库enum类型，使用String接收
     */
    @TableField("role")
    private String role;

    /**
     * 真实姓名（与身份证一致）
     */
    @TableField("real_name")
    private String realName;

    /**
     * 身份证号（18位，唯一约束）
     */
    @TableField("id_card")
    private String idCard;

    /**
     * 联系电话
     */
    @TableField("phone")
    private String phone;

    /**
     * 联系地址（可为空）
     */
    @TableField("address")
    private String address;

    /**
     * 认证状态（待审核/已通过/已拒绝）
     * 默认值为"待审核"
     */
    @TableField("status")
    private String status = "待审核";

    /**
     * 认证凭证（资格证书图片URL）
     */
    @TableField("certificate")
    private String certificate;

    /**
     * 拒绝原因（仅状态为"已拒绝"时有效）
     */
    @TableField("reject_reason")
    private String rejectReason;

    /**
     * 审核员ID（关联user表）
     */
    @TableField("reviewer_id")
    private Long reviewerId;

    /**
     * 申请时间（默认当前时间）
     */
    @TableField("applied_at")
    private LocalDateTime appliedAt = LocalDateTime.now();

    /**
     * 审核时间（审核后设置）
     */
    @TableField("reviewed_at")
    private LocalDateTime reviewedAt;
    @TableField(exist = false)
    private String username;
    @TableField(exist = false)
    private String avatar;
}
